function Snow(options) {
	this.applicationContext = (options && options.applicationContext);
	this.parentHtmlObject = (options && options.parentHtmlObject);
	this.id = (options && options.id);
	this.x = (options && options.x) || 0;
	this.y = (options && options.y) || 0;
	this.width = (options && options.width) || 1;
	this.height = (options && options.height) || 1;
	this.maxX = (options && options.maxX) || 800;
	this.maxY = (options && options.maxY) || 400;
	this.turnOnCount = (options && options.turnOnCount) || 20;
	this.currentTurn = 0;
	
	this.htmlObject;
	this.color = "#CCCCCC";
	this.snowText = "&bull;";
	
	this.init = function () {
		this._setTurnOnCountAsRandom();
		
		var div = document.createElement("div");
		
		div.innerHTML = this.snowText;
		div.style.position = "absolute";
		
		div.style.top = this.y;
		div.style.left = this.x;
		div.style.width = this.width;
		div.style.height = this.height;
		div.style.color = this.color;
		div.style.overflow = "hidden";
		
		this.htmlObject = div;
		
		this.parentHtmlObject.appendChild(this.htmlObject);
	};
	
	this._setTurnOnCountAsRandom = function() {
		this.turnOnCount = Math.floor((Math.random() * 50)) + 50;
	};
	
	this.isExpired = function () {
		if (this.x >= this.maxX || this.y >= this.maxY) {
			return true;
		} else {
			return false;
		}
	};
	
	this.getId = function() {
		return this.id;
	};
	
	this.getX = function () {
		return this.x;
	};
	
	this.getY = function () {
		return this.y;
	};
	
	this.setX = function (x) {
		this.x = x;
		this.htmlObject.style.left = this.x;
	};
	
	this.setY = function (y) {
		this.y = y;
		this.htmlObject.style.top = this.y;
	};
	
	this.getWeight = function (weightConstant) {
		var area = this.width * this.height;
		
		if (area <= 25) {
			return weightConstant.RIGHT;
		} else if (area <= 100) {
			return weightConstant.MIDDLE;
		} else {
			return weightConstant.HEAVY;
		}
	};
	
	this.isTurnOn = function() {
		if (parseInt(this.currentTurn) >= parseInt(this.turnOnCount)) {
			return true;
		} else {
			return false;
		}
	};
	
	this.initTurn = function() {
		this._setTurnOnCountAsRandom();
		this.currentTurn = 0;
	};
	
	this.increaseTurnCount = function() {
		this.currentTurn = this.currentTurn + 1;
	};
	
	this.destroy = function () {
		this.parentHtmlObject.removeChild(this.htmlObject);
	};
}